﻿<html DIR="LTR" xmlns:tool="http://www.microsoft.com/tooltip" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
  <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8" />
    <META NAME="save" CONTENT="history" />
    <title>Readme_Execute SQL Statements in a Loop Package Sample</title>
    
    
    
    <style TYPE="text/css">
body
{
background: #FFFFFF;
color: #000000;
font-family:    Verdana;
font-size: medium;
font-style: normal;
font-weight: normal;
margin-top: 0;
margin-bottom:  0;
margin-left:    0;
margin-right:   0;
width:  100%;
}

div.#mainSection
{
font-size: 70%;
width: 100%;
padding-left:    10;
margin-right: 10;
}

div.#mainBody
{
font-size: 90%;
margin-top: 10;
padding-bottom: 20;
}

div.#header
{
background-color: #D2D2D2;
padding-top:    0;
padding-bottom: 0;
padding-left:   10;
padding-right:  0;
width:          100%;
}

div.#header table
{
border-bottom-color: #C8CDDE;
border-bottom-style: solid;
border-bottom-width: 1;
width:  100%;
}

span.#runningHeaderText
{
color: #003399;
font-size: 90%;
}

span.#nsrTitle
{
/*    color: #003399;*/
font-size: 120%;
font-weight: 600;
}

div.#header table td
{
color: #000000;
font-size: 70%;
margin-top: 0;
margin-bottom:  0;
padding-right: 20;
}

div.#header table tr.#headerTableRow3 td
{
padding-bottom: 2;
padding-top: 5;
}

div.#header table.#bottomTable
{
border-top-color: #FFFFFF;
border-top-style: solid;
border-top-width: 1;
text-align: left;
}

div.#footer
{
font-size: 90%;
margin-top: 0;
margin-bottom:  0;
margin-left:    -5;
margin-right:   0;
padding-top:    2;
padding-bottom: 2;
padding-left:   0;
padding-right:  0;
width:  100%;
}

hr.#footerHR
{
border-bottom-color: #EEEEFF;
border-bottom-style: solid;
border-bottom-width: 1;
border-top-color: C8CDDE;
border-top-style: solid;
border-top-width: 1;
height: 3;
color: #D2D2D2;
}

div.section
{
padding-top:    2;
padding-bottom: 2;
padding-right:  15;
width:  100%;
}

.heading
{
color:          #000000;
font-weight:    bold;
margin-top:     18;
margin-bottom:  8;
}

h1.heading
{
color: #000000;
font-size:  150%;
}

.subHeading
{
color:          #000000;
font-weight:    bold;
font-size:      150%;
margin-bottom:  4;
}

h2.subHeading
{
color:          #000000;
font-weight:    bold;
font-size:      130%;
}
h3.subHeading
{
color:  #000000;
font-size: 125%;
font-weight: bold;
}

h4.subHeading
{
color: #000000;
font-size: 110%;
font-weight: bold;
}

h4.procedureHeading
{
color: #000080;
font-size: 110%;
font-weight: bold;
}

h5.subHeading
{
color: #000000;
font-size: 100%;
font-weight: bold;
}

img
{
padding-bottom: 10;
}

img.toggle
{
border: 0;
margin-right: 5;
padding-bottom: 10;
}

img.copyCodeImage
{
border: 0;
margin: 1;
margin-right: 3;
padding-bottom: 10;
}

img.downloadCodeImage
{
border: 0;
margin-right: 3;
padding-bottom: 10;
}

img.viewCodeImage
{
border: 0;
margin-right: 3;
padding-bottom: 10;
}

img.note
{
border: 0;
margin-right: 3;
padding-bottom: 10;
}

img.#membersOptionsFilterImage
{
border: 0;
margin-left: 10;
vertical-align: middle;
padding-bottom: 10;
}

img.#toggleAllImage
{
margin-left: 4;
vertical-align: middle;
padding-bottom: 10;
}

div.#mainSection table
{
border: 0;
font-size: 100%;
width:  100%;
margin-top: 5px;
margin-bottom: 15px;
}

div.#mainSection table tr
{
vertical-align: top;
}

div.#mainSection table th
{
text-align: left;
background: #D8D8D8;
border-bottom-color: #D8D8D8;
border-bottom-style: solid;
border-bottom-width: 1;
color: #000000;
padding-left: 5;
padding-right: 5;
}

div.#mainSection table td
{
background: #F2F2F2;
border-top-color: #D8D8D8;
border-top-style: solid;
border-top-width: 1;
padding-left: 5;
padding-right: 5;
}

div.#mainSection table td.imageCell
{
white-space: nowrap;
}

div.code
{
width: 98%;
}

div.code table
{
border: 0;
font-size: 95%;
margin-bottom: 5;
width: 100%
}

div.code table th
{
text-align: left;
background: #D8D8D8;
border-bottom-color: #D8D8D8;
border-bottom-style: solid;
border-bottom-width: 1;
color: #000000;
font-weight: bold;
padding-left: 5;
padding-right: 5;
}

div.code table td
{
background: #CCCCCC;
border-top-color: #D8D8D8;
border-top-style: solid;
border-top-width: 1;
padding-left: 5;
padding-right: 5;
padding-top: 5;
}

div.alert
{
margin-left: 10;
width: 98%;
}

div.alert table
{
border: 1;
font-size: 100%;
width:  100%;
border: solid 1 #DEDFEF;
}

div.alert table th
{
text-align: left;
background: #D8D8D8;
border-bottom-width: 0;
color: #000000;
padding-left: 5;
padding-right: 5;
border: solid 1 #DEDFEF;
}

div.alert table td
{
background: #FFFFFF;
border-top-color: #D8D8D8;
border-top-style: solid;
border-top-width: 1;
padding-left: 5;
padding-right: 5;
border: solid 1 #DEDFEF;
}

span.copyCode
{
color: #0000ff;
font-size: 90%;
font-weight: normal;
cursor: hand;
float: right;
display: inline;
text-align: right;
}

.downloadCode
{
color: #0000ff;
font-size: 90%;
font-weight: normal;
cursor: hand;
}

.viewCode
{
color: #0000ff;
font-size: 90%;
font-weight: normal;
cursor: hand;
}

div.code pre
{
font-family:    Monospace, Courier New, Courier;
font-size: 105%;
color:  #000000;
}

code
{
font-family:    Monospace, Courier New, Courier;
font-size: 105%;
color:  #000000;
}

dl
{
margin-top: 0;
padding-left:   1;
}

dd
{
margin-bottom:  0;
margin-left:    0;
padding-left:   20;
}

dd p
{
margin-top: 5;
}

ul
{
margin-left: 17;
list-style-type: disc;
}

ul ul
{
margin-bottom: 4;
margin-left: 17;
margin-top: 3;
list-style-type: disc;
}

ol
{
margin-left: 24;
list-style-type: decimal;
}

ol ol
{
margin-left: 24;
margin-top: 3;
list-style-type: lower-alpha;
}

li
{
margin-top: 0;
margin-bottom: 0;
padding-bottom: 0;
padding-top: 0;
margin-left: 5;
}

p
{
margin-bottom: 15;
}

.tip
{
color:  #0000FF;
font-style: italic;
cursor:hand;
text-decoration:underline;
}

.math
{
font-family: Times New Roman;
font-size: 125%
}
.sourceCodeList
{
font-family: Verdana;
font-size: 90%;
}

pre.viewCode
{
width: 100%;
overflow: auto;
}

li:hover table, li.over table
{
background-color: #C0C0C0;
}

li:hover ul, li.over ul
{
background-color: #d2d2d2;
border: 1px solid #000;
display: block;
}
            </style>
  </head>
  <body>
    <!--Topic built:06/04/2008 01:31:57-->

    
    
    
    
    
    
    
    
    
    <div id="header">
      <table width="100%" id="topTable"><tr>
          <td align="left">
            <span id="nsrTitle">Readme_Execute SQL Statements in a Loop Package Sample</span>
          </td>
          <td align="right">
            <span id="headfb" class="feedbackhead">
            </span>
          </td>
        </tr></table>
      
      
      
    </div>
    <div id="mainSection">
      <div id="mainBody"><p> 6/4/2008 1:31:57 AM</p>
        
        <font color="DarkGray"> </font><p /> 
        <span id="changeHistory">
        </span>
    <p>
      This sample works only with SQL Server 2005 and SQL Server 2008. It will not work with any version of SQL Server earlier than SQL Server 2005.
    </p>
    <p>The Execute SQL Statements in a Loop sample package uses a Foreach Loop container to iterate through SQL statements saved in text files in a folder. The Transact-SQL statements create five tables in the <b>AdventureWorks</b> database, one table for each of the valid sales territories in the United States. The collection value of the Foreach File enumerator maps to a variable. This variable is used in a property expression to update the value of the connection string in a File connection manager, CreateTableSQL, with each enumeration. </p>
    <p>The data in the text file has several problems: some postal codes were incorrectly interpreted as numeric values and therefore are missing their leading zeros, and the identifier of some sales territories are not valid. The data flow in the package detects and corrects incorrect postal codes, writes data rows with an invalid sales territory to a file, and directs valid data rows to one of five tables in the <b>AdventureWorks</b> database. </p>
    <p>The sample package uses a second Foreach Loop container to iterate through SQL statements saved in text files in a folder. The container uses the Foreach File enumerator to iterate through the files. The Transact-SQL statements query the five tables for the valid sales territories in the United States and return the row count for each table. The collection value of the Foreach File enumerator maps to a variable. This variable is used in a property expression to update the value of the connection string in a File connection manager, SelectCountSQL, with each enumeration.</p>
    <p>The Foreach Loop container has an Execute SQL task and a Script task. The Execute SQL task runs the SQL statements and stores the row count for each table, as a <b>Single row</b> result set, in a package variable. The Script task displays the row count for each table.  </p>
    <p>When the package is rerun, the tables are truncated before the data is inserted. </p>
    <div class="alert"><table width="100%" cellspacing="0" cellpadding="0"><tr><th align="left">Note: </th></tr><tr><td>
      To avoid validation errors during the configuration of the File connection managers, CreateTableSQL and SelectCountSQL, existing files were selected in the <b>File Connection Manager Editor</b>.<p />
    </td></tr></table><p /></div>
    <p>If you run the sample on a non-English version of Windows, you may have to substitute the localized name of the Program Files folder to open or run the sample.</p>
    <div class="alert"><table width="100%" cellspacing="0" cellpadding="0"><tr><th align="left">Important: </th></tr><tr><td>
      Samples are provided for educational purposes only. They are not intended to be used in a production environment and have not been tested in a production environment. Microsoft does not provide technical support for these samples.<p />
    </td></tr></table><p /></div>
  <h1 class="heading">Requirements</h1><div id="requirementsSection" class="section">
    <content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
      <p xmlns="">Before you run this sample package, ensure that the following conditions are met:  </p>
      <ul xmlns=""><li>
          The sample package and data files that it uses must be installed on the local hard disk drive. <br />
        </li><li>
          You must have installed and have administrative permissions on the <b>AdventureWorks</b> database. <br />
        </li><li>
          If you intend only to run the sample package from the command line, you must install Integration Services. <br />
        </li><li>
          If you intend to open the package in SSIS Designer and run the sample package, you must install Business Intelligence Development Studio. <br />
        </li></ul>
      <p xmlns="">For more information about how to install samples, see the topic, "Installing Sample Integration Services Packages", in SQL Server Books Online. </p>
    </content>
  </div><h1 class="heading">Location of the Sample Package</h1><div id="sectionSection0" class="section"><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
      <p xmlns="">If the samples were installed to the default installation location, the Execute SQL Statements Sample package is located in the following folder: </p>
      <p xmlns="">
        C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\</p>
      <p xmlns="">The following files are required to run this sample package.</p>
      <table width="100%" cellspacing="0" cellpadding="0" border="1" style="background-color: #CCCCCC;" xmlns=""><tr>
            <th>
              File
            </th>
            <th>
              Description
            </th>
          </tr><tr>
          <td>
            <p>ExecuteSQLStatementsInLoop.dtsx</p>
          </td>
          <td>
            <p>The package file.</p>
          </td>
        </tr><tr>
          <td>
            <p>Customer.txt</p>
          </td>
          <td>
            <p>The source data file.</p>
          </td>
        </tr><tr>
          <td>
            <p>CustomersWithInvalidTerritoryID.txt</p>
          </td>
          <td>
            <p>The file to which data that is not valid is written.</p>
          </td>
        </tr><tr>
          <td>
            <p>CreateProspectTableTerr1.sql</p>
          </td>
          <td>
            <p>The Transact-SQL statement that creates the <b>Territory1</b> table.</p>
          </td>
        </tr><tr>
          <td>
            <p>CreateProspectTableTerr2.sql</p>
          </td>
          <td>
            <p>The Transact-SQL statement that creates the <b>Territory2</b> table.</p>
          </td>
        </tr><tr>
          <td>
            <p>CreateProspectTableTerr3.sql</p>
          </td>
          <td>
            <p>The Transact-SQL statement that creates the <b>Territory3</b> table.</p>
          </td>
        </tr><tr>
          <td>
            <p>CreateProspectTableTerr4.sql</p>
          </td>
          <td>
            <p>The Transact-SQL statement that creates the <b>Territory4</b> table.</p>
          </td>
        </tr><tr>
          <td>
            <p>CreateProspectTableTerr5.sql</p>
          </td>
          <td>
            <p>The Transact-SQL statement that creates the <b>Territory5</b> table.</p>
          </td>
        </tr><tr>
          <td>
            <p>Select ProspectTableTerr1.sql</p>
          </td>
          <td>
            <p>The Transact-SQL statement that returns the row count for Territory1 table.</p>
          </td>
        </tr><tr>
          <td>
            <p>Select ProspectTableTerr2.sql</p>
          </td>
          <td>
            <p>The Transact-SQL statement that returns the row count for Territory2 table.</p>
          </td>
        </tr><tr>
          <td>
            <p>Select ProspectTableTerr3.sql</p>
          </td>
          <td>
            <p>The Transact-SQL statement that returns the row count for Territory3 table.</p>
          </td>
        </tr><tr>
          <td>
            <p>Select ProspectTableTerr4.sql</p>
          </td>
          <td>
            <p>The Transact-SQL statement that returns the row count for Territory4 table.</p>
          </td>
        </tr><tr>
          <td>
            <p>Select ProspectTableTerr5.sql</p>
          </td>
          <td>
            <p>The Transact-SQL statement that returns the row count for Territory5 table.</p>
          </td>
        </tr></table>
    </content></div><h1 class="heading">Running the Sample</h1><div id="sectionSection1" class="section"><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
      <p xmlns="">The package can be run from the command line by using the <b>dtexec</b> utility, or can be run in Business Intelligence Development Studio.</p>
      <p xmlns="">If you are using a non-English version of Windows, you may have to update the <b>ConnectionString</b> property of any file connection managers used in the package to run the sample package successfully. You should verify that the path used in the connection manager is valid on your computer, and if you need to, modify the path so that it uses the localized name of the Program Files folder.</p>
      <p xmlns="">For this sample, you may have to update "Program Files" in the <b>ConnectionString</b> property for the Customers and CustomersWithInvalidTerritoryID connection managers.</p>
      <h4 class="procedureHeading" xmlns="">To run the package by using dtexec</h4><div id="procedureSectionEHBHBHA" class="section" xmlns=""><ol><li>
            <content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
              <p xmlns="">Open a Command Prompt window.</p>
            </content>
          </li><li>
            <content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
              <p xmlns="">Use the <b>Change Directory</b> command, <b>cd</b>, to change the directory to C:\Program Files\Microsoft SQL Server\100\DTS\Binn, the location of <b>dtexec</b>.</p>
            </content>
          </li><li>
            <content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
              <p xmlns="">Type the following command:</p>
              <div class="code" xmlns=""><span codeLanguage="other"><table width="100%" cellspacing="0" cellpadding="0"><tr><th align="left" /></tr><tr><td colspan="2"><pre>dtexec /f "C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\ExecuteSQLStatementsInLoop.dtsx"</pre></td></tr></table></span></div>
            </content>
          </li><li>
            <content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
              <p xmlns="">Press <b>Enter</b>.</p>
            </content>
          </li></ol></div>
      <p xmlns="">For more information about how to run the package by using the <b>dtexec</b> utility, see the topic, "dtexec Utility", in SQL Server Books Online. </p>
      <h4 class="procedureHeading" xmlns="">To run the package in Business Intelligence Development Studio</h4><div id="procedureSectionEDBHBHA" class="section" xmlns=""><ol><li>
            <content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
              <p xmlns="">Open Business Intelligence Development Studio.</p>
            </content>
          </li><li>
            <content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
              <p xmlns="">On the <b>File</b> menu, point to <b>Open</b>, click <b>Project/Solution</b>.</p>
            </content>
          </li><li>
            <content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
              <p xmlns="">Locate the ExecuteSQLStatementsInLoop Sample folder, and then double-click the file named ExecuteSQLStatementsInLoop.sln.</p>
            </content>
          </li><li>
            <content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
              <p xmlns="">In <b>Solution Explorer</b>, right-click ExecuteSQLStatementsInLoop.dtsx in the <b>SSIS Packages</b> folder, and then click <b>Execute Package</b>. </p>
            </content>
          </li></ol></div>
      <div class="alert" xmlns=""><table width="100%" cellspacing="0" cellpadding="0"><tr><th align="left">Important: </th></tr><tr><td>
        If you open the Execute SQL Statements in a Loop sample package in SSIS Designer before you run the package for the first time, the Data Flow task includes a warning. The warning occurs because the SQL Server tables that the package uses do not exist yet; the tables are created the first time that you run the package. The warning does not appear when you reopen the package in SSIS Designer, if you have run the package at least one time. The package runs successfully regardless of the warning.<p />
      </td></tr></table><p /></div>
    </content></div><h1 class="heading">Components in Sample</h1><div id="sectionSection2" class="section"><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
      <p xmlns="">The following table lists the Integration Services tasks, containers, sources, transformations, destinations, and connection managers that are used in the sample.</p>
      <table width="100%" cellspacing="0" cellpadding="0" border="1" style="background-color: #CCCCCC;" xmlns=""><tr>
            <th>
              Element
            </th>
            <th>
              Purpose
            </th>
          </tr><tr>
          <td>
            <p>Foreach Loop</p>
          </td>
          <td>
            <p>The Foreach Loop container, <b>Run SQL Statements</b>, uses the Foreach File enumerator to iterate through files that contain Transact-SQL statements. The Foreach Loop container includes an Execute SQL task.</p>
          </td>
        </tr><tr>
          <td>
            <p>Execute SQL task</p>
          </td>
          <td>
            <p>The Execute SQL task, <b>Create Tables</b>, connects to the <b>AdventureWorks</b> database and accesses files that contain Transact-SQL statements by using a File connection manager, <b>CreateTableSQL</b>. The task runs the five Transact-SQL statements that create tables. </p>
          </td>
        </tr><tr>
          <td>
            <p>Data Flow task</p>
          </td>
          <td>
            <p>The Data Flow task, <b>Extract-Clean-Load Data</b>, executes a data flow that extracts the data from a text file, cleans and distributes the data, and then loads the data into tables in the <b>AdventureWorks</b> database. </p>
          </td>
        </tr><tr>
          <td>
            <p>Flat File source</p>
          </td>
          <td>
            <p>The Flat File source, <b>Extract data</b>, extracts the data from the text file.</p>
          </td>
        </tr><tr>
          <td>
            <p>Conditional Split transformation</p>
          </td>
          <td>
            <p>The Conditional Split transformation, <b>Direct Rows by TerritoryID</b>, directs rows to different outputs depending on the value in the <b>TerritoryID</b> column. Rows with invalid values in <b>TerritoryID</b> are directed to the default output.</p>
          </td>
        </tr><tr>
          <td>
            <p>Derived Column transformation </p>
          </td>
          <td>
            <p>The Derived Column transformation, <b>Fix Postal Code</b>, cleans the postal codes by adding a leading zero to four-character postal codes.</p>
          </td>
        </tr><tr>
          <td>
            <p>OLE DB Destination</p>
          </td>
          <td>
            <p>Five OLE DB destinations load data into five different territory tables.</p>
          </td>
        </tr><tr>
          <td>
            <p>Foreach Loop container</p>
          </td>
          <td>
            <p>The Foreach Loop container, <b>Run SQL Select Statements</b>, uses the Foreach File enumerator to iterate through files that contain Transact-SQL statements. The container has an Execute SQL task, <b>Select Table Count</b>, and a Script task, <b>Display Table Count</b> .</p>
          </td>
        </tr><tr>
          <td>
            <p>Execute SQL task</p>
          </td>
          <td>
            <p>The Execute SQL task, <b>Select Table Count</b>, connects to the <b>AdventureWorks</b> database and accesses files that contain Transact-SQL statements by using a File connection manager, <b>SelectCountSQL</b>. The task runs the five statements that query the different territory tables and return the row count for each table. The task stores the row count, as a <b>Single row</b> result set, in a package variable. </p>
          </td>
        </tr><tr>
          <td>
            <p>Script task</p>
          </td>
          <td>
            <p>The Script task, <b>Display Table Count</b>, displays the row count for each of the five tables.</p>
          </td>
        </tr><tr>
          <td>
            <p>File connection manager</p>
          </td>
          <td>
            <p>The File connection manager, <b>SelectCountSQL</b>, connects to files that contain SQL SELECT COUNT statements.</p>
          </td>
        </tr><tr>
          <td>
            <p>File connection manager</p>
          </td>
          <td>
            <p>The File connection manager, <b>CreateTableSQL</b>, connects to files that contain SQL CREATE TABLE statements.</p>
          </td>
        </tr><tr>
          <td>
            <p>Flat File connection managers</p>
          </td>
          <td>
            <p>The File connection manager, <b>Customers</b>, connects to the text file that contains the customer source data.</p>
            <p>The File connection manager, <b>CustomsWithInvalidTerritoryId</b>, connects to the text file to which the package writes invalid data.</p>
          </td>
        </tr><tr>
          <td>
            <p>OLE DB connection manager</p>
          </td>
          <td>
            <p>The OLE DB connection manager, <b>(local).AdventureWorks</b>, connects to the <b>AdventureWorks</b> database on the local server.</p>
          </td>
        </tr></table>
    </content></div><h1 class="heading">Sample Results</h1><div id="sectionSection3" class="section"><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
      <p xmlns="">To see the execution results of the Execute SQL Statements in a Loop sample package, open a Query window in SQL Server Management Studio, type or copy the following Transact-SQL query, and then run the query.</p>
      <div class="code" xmlns=""><span codeLanguage="other"><table width="100%" cellspacing="0" cellpadding="0"><tr><th align="left" /></tr><tr><td colspan="2"><pre>SELECT * FROM AdventureWorks.dbo.Territory1
SELECT * FROM AdventureWorks.dbo.Territory2
SELECT * FROM AdventureWorks.dbo.Territory3
SELECT * FROM AdventureWorks.dbo.Territory4
SELECT * FROM AdventureWorks.dbo.Territory5
</pre></td></tr></table></span></div>
      <p xmlns="">This query retrieves the data that was extracted from the text file and loaded into SQL Server tables. </p>
    </content></div><!--[if gte IE 5]>
			<tool:tip element="seeAlsoToolTip" avoidmouse="false"/><tool:tip element="languageFilterToolTip" avoidmouse="false"/><tool:tip element="roleInfoSpan" avoidmouse="false"/>
		<![endif]--></div>
      <div id="footer">
			
			© 2008 Microsoft Corporation. All rights reserved.
		</div>
    </div>
  </body>
</html>